home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
networking
/
mail
/
mh
/
contrib
/
audit
/
mh.pl
< prev
next >
Wrap
Text File
|
1992-11-19
|
4KB
|
189 lines
# =====
# Subroutine mh_profile
# Parse the user's .mh_profile and get arguments and settings
#
sub mh_profile {
local($PROFILE);
($PROFILE = $ENV{"MH"}) || ($PROFILE = $ENV{"HOME"} . "/.mh_profile");
open PROFILE || "$0: can't read mh_profile $PROFILE: $!\n";
while (<PROFILE>) {
next if /^#/;
next unless ($key, $value) = /([^:\s]+):\s*(.+)/;
$key =~ tr/A-Z/a-z/;
$MH{$key} = $value;
}
close PROFILE;
$MH{'path'} = $ENV{'HOME'} . '/' . $MH{'path'};
}
# =====
# Subroutine rcvstore
# Convenience routine for MH users. Pipes incoming
# mail message to rcvstore. Expects one argument - the
# name of the folder to rcvstore into.
#
sub rcvstore {
local($folder) = @_;
&openpipe("/usr/local/bin/mh/lib/rcvstore +$folder -create");
}
# =====
# Subroutine rcvdist
# Convenience routine for MH users. Pipes incoming
# mail message to rcvdist. Expects one argument - the
# list of users to distribute the mail message to
#
sub rcvdist {
local($recips) = @_;
&openpipe("/usr/local/bin/mh/lib/rcvdist $recips");
}
# =====
# Subroutine rcvtty
# Convenience routine for MH users. Pipes incoming
# mail message to rcvtty. This is MH's version of biff.
#
sub rcvtty {
&openpipe("/usr/local/bin/mh/lib/rcvtty");
}
# =====
# Subroutine ali
# Expand an MH alias into a list of names usable by
# rcvdist
#
sub ali {
local($alias) = @_;
local($recips);
local(@list) = ();
$recips = `/usr/local/bin/mh/ali $alias`;
chop $recips;
return(@list) if ($alias eq $recips);
@list = split(/,/, $recips);
return(@list);
}
# =====
# Subroutine refile_from
# Refile a message into a folder by organization and
# sender name. The top-level folder is an argument
# the user can specify.
#
sub refile_from {
local($toplevel) = @_;
return if (length($from) <= 0);
return if ($from eq $user);
$toplevel = "log" if ($toplevel eq '');
&rcvstore("$toplevel/$organization/$from");
}
# =====
# Subroutine make_mhpath
# Make a directory path recursively.
#
sub make_mhpath {
local($dir) = @_;
local($i);
local($mode) = 0755;
$mode = oct($MH{'folder-protect'}) if (defined $MH{'folder-protect'});
$_ = $dir;
s#^/.*#/# || s#^[^/].*#.#;
$start = $_;
foreach $i (split('/', $dir)) {
$start = $start . '/' . $i;
next if (-d $start);
mkdir($start, $mode) || return(1);
};
return(0);
}
# =====
# Subroutine mh_parse
# Parse the command line options
#
sub mh_parse {
local(@argdesc) = @SW;
local($wantarg);
while (($#ARGV >= 0) && ($ARGV[0] !~ /^-.+/)) { # must be a message list
push(@MSGS, shift @ARGV);
};
grep(s/(\W)/\\$1/g, @argdesc);
@ARGV = (split(' ', $MH{$program}), @ARGV) if defined($MH{$program});
return if ($#ARGV < 0);
while ($ARGV[0] =~ /^-.+/) {
$ARGV = shift @ARGV;
unless (@matches = grep(/$ARGV/, @argdesc)) {
print "$program: unknown option: $ARGV\n";
exit 1;
&usage;
}
for (@matches) { s/\\(\W)/$1/g; }
if ($#matches > $[) {
print "$program: ambiguous switch $ARGV matches:\n";
for (@matches) {
print "\ ", $_, "\n";
}
exit 1;
}
($switch,$wantarg) = $matches[$[] =~ /^-(\S+)\s*(\S*)/;
$SW{$switch} = $wantarg ? shift @ARGV : 1;
if ($SW{$switch} =~ /^(['"]).*$/ && $SW{$switch} !~ /^(['"]).*\1$/) {
do {
$SW{$switch} .= ' ' . (shift @ARGV);
} until $#ARGV < 0 || $SW{$switch} =~ /^(['"]).*\1$/;
$SW{$switch} =~ s/^(['"])(.*)\1$/$2/;
}
}
}
# =====
# Subroutine print_switches
# print the valid command line switches
#
sub print_switches {
local(@argdesc) = @SW;
print " switches are:\n";
for (sort @SW) {
print " $_\n";
};
print "\n";
}
1;